<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
<script type="text/javascript" src="js/JnPakg.js"></script>
<script type="text/javascript">
(function(){
	dw("09_call于apply的区别.html");
})();

/**
对于apply和call两者在作用上是相同的，但两者在参数上有区别的。
对于第一个参数意义都一样，但对第二个参数：
apply传入的是一个参数数组，也就是将多个参数组合成为一个数组传入，而call则作为call的参数传入（从第二个参数开始）。
如 func.call(func1,var1,var2,var3)对应的apply写法为：func.apply(func1,[var1,var2,var3])
同时使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入\
**/

var A = function(_x,_y){
	dw("a gz : " + this)
	var x = _x;
	var y = _y;
	this.getX = function(){return x;}
	this.getY = function(){return y;}
}
A.prototype.z = 3;

var a = new A();
dw(A.prototype);
dw(a.getX());
dw(a.getY());
dw(a.z);
dw.dl();


//只有function对象才能够new 和 call 以及 apply
var B = {a:1,b:2,c:3};
//var b = new b();
//dw(B.a);
//dw(b.a);
//B.call // 以上无法运行哦
A.call(B,5,8);
dw("B.getX() : " + B.getX());
dw("B.getY() : " + B.getY());
//由于是用B来代替A()中的this,因此最好传入实例,
//若传入一个function对象就是增加静态的变量和方法了.



</script>
</html>